home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU12.ARC / MSD - $%c643%c4 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.8 KB  |  105 lines

  1. ║CM:MSD - $╞43─
  2. ║LM21:RM70:PP66:PG60
  3. ║P#124
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ├╘╠╥─    ├ONTROL READING OF HEADER BLOCK
  7.  
  8. $╞43─           ╩╙╥ ╙╥├╚ [$╞446] TO SET UP HEADER AND READ IT.
  9. $╞440           ╔F .┌ IS SET THEN ALL WENT WELL SO BRANCH TO ├╘╠10.
  10. $╞442           ╩UMP TO ├╠┼╬╒╨ [$╞65┼] TO CLEAN UP AFTER COMMAND.
  11. $╞445  ├╘╠10    ╥ETURN.
  12.  
  13.  
  14.  
  15.        ╙╥├╚     ┬UILD HEADER AND THEN TRY TO FIND IT
  16.  
  17. $╞446           ╠OAD .╪ WITH ─╥╔╓┼ [$┬0].
  18. $╞448           ├OPY ─╙╦╔─1,╪ [$4├24,╪] AND ─╙╦╔─2,╪ [$4├26,╪] TO ╔─1 [$4├28] AND ╔─2 [$4├29] OF THE HEADER.
  19. $╞454           ├OPY ╩╧┬╘╥╦ [$4┼┴5] AND ╩╧┬╙┼├ [$4┼┴6] TO THE HEADER TRACK [$4├2┴] AND SECTOR [$4├2┬].
  20. $╞460           ├ALCULATE HEADER CHECKSUM AND SAVE IN [$4├2├].
  21. $╞46├           ╩╙╥ ├╧╬╚─╥ [$╞622] TO CONVERT THE HEADER TO ╟├╥.
  22. $╞46╞           ╥EVERSE HEADER IMAGE AT ╙╘┴┬ [$4┼8╞-96] AND SAVE IT AT ╔╙╘┴┬ [$4┼99-┴0].
  23. $╞47─           ╙ET .╪ TO $5┴ (WILL READ 90 HEADERS BEFORE GIVING UP).
  24. $╞47╞  ╙╥├╚20   ╩╙╥ ╙┘╬├ [$╞4┴6] TO WAIT FOR A ╙┘╬├ MARK.
  25. $╞482           ╔F .├ IS CLEAR, A ╙┘╬├ WAS FOUND SO BRANCH TO ╙╥├╚22.
  26. $╞484           ╠OAD .┴ WITH $03 (╬╧ ╙┘╬├ ├╚┴╥┴├╘┼╥).
  27. $╞486           ╥ETURN.
  28. $╞487  ╙╥├╚22   ╫AIT FOR ╙┘╬├ SIGNAL TO VANISH.
  29. $╞48┴           ╙ET .┘ TO $07 (SIZE OF HEADER BLOCK - 1).
  30. $╞48├  ╙╥├╚25   ╫AIT FOR BYTE READY.
  31. $╞490           ╠OAD .┴ WITH BYTE FROM ╨ORT ┬ [$01].
  32. $╞492           ╔F BYTE DOES NOT MATCH ╔╙╘┴┬,┘ [$4┼99,┘] THEN THIS IS NOT THE RIGHT HEADER SO BRANCH TO ╙╥├╚30 TO CONTINUE SEARCHING.
  33. $╞497           ─ECREMENT .┘ AND LOOP BACK TO ╙╥├╚25 IF .┘ IS NOT NEGATIVE.
  34. $╞49┴           ╠OAD .┴ WITH $00 TO INDICATE THE HEADER WAS FOUND.
  35. $╞49├           ╥ETURN.
  36. $╞49─  ╙╥├╚30   ─ECREMENT .╪ (NUMBER OF ATTEMPTED HEADER READS).
  37. $╞49┼           ╔F .╪ IS NOT ZERO THEN LOOP BACK TO ╙╥├╚20 TO CONTINUE LOOKING AT HEADERS.
  38. $╞4┴0           ╠OAD .┴ WITH $02 (╚┼┴─┼╥ ┬╠╧├╦ ╬╧╘ ╞╧╒╬─).
  39. $╞4┴2           ╥ETURN.
  40.  
  41.  
  42.  
  43.        ─╙╘╥╘    ╠OCATE HEADER AND WAIT FOR DATA BLOCK
  44.  
  45. $╞4┴3           ╩╙╥ ├╘╠╥─ [$╞43─] TO CONTROL READING OF HEADER BLOCK.
  46.  
  47.  
  48.  
  49.        ╙┘╬├     ╫AIT FOR ╙┘╬├ MARK
  50.  
  51. $╞4┴6           ╙ET ╒╠┴# [$1┴] TO $╞8 TO CAUSE A TIMER INTERRUPT IN 63.5 MILLISECONDS.
  52. $╞4┴┴           ╙ET .┴ TO $03 AND SET THE .├ FLAG AS THE DEFAULT IN CASE A ╙┘╬├ MARK CANNOT BE FOUND.
  53. ║FP0
  54. $╞4┴─  ╙┘╬├10   ╔F THE TIMER HAS TIMED OUT, BRANCH TO ╙┘╬├20.
  55. $╞4┬0           ╔F A ╙┘╬├ HAS NOT BEEN DETECTED LOOP BACK TO ╙┘╬├10.
  56. $╞4┬3           ╙ET .┘ TO $00 IN PREPARATION FOR READING THE DATA BLOCK.
  57. $╞4┬5           ├LEAR .├ FLAG TO INDICATE ╙┘╬├ MARK WAS FOUND.
  58. $╞4┬6  ╙┘╬├20   ╥ETURN.
  59.  
  60.  
  61.  
  62.        ╫╥╔╟╚╘   ├HECK FOR WRITE JOB AND WRITE BLOCK
  63.  
  64. $╞4┬7           ╔F .┴ = $10 (╫╥╔╘┼) BRANCH TO ╫╥╘05 TO CONTINUE.
  65. $╞4┬┬           ╩UMP TO ╓╥╞┘ [$╞5─7] TO CHECK FOR OTHER JOB CODES.
  66. $╞4┬┼  ╫╥╘05    ╩╙╥ ╟╫╘╨╙ [$╞7┼╞] TO CHECK WRITE PROTECT STATUS.
  67. $╞4├1           ╔F .┌ IS CLEAR, THE DISK CAN BE WRITTE TO SO BRANCH TO ╫╥╘07 TO CONTINUE.
  68. $╞4├3           ╠OAD .┴ WITH $08 (╫╥╔╥┼ ╨╥╧╘┼├╘ ┼╥╥╧╥).
  69. $╞4├5  ╫╥╘┼╥╥   ╩UMP TO ├╠┼╬╒╨ [$╞65┼] TO CLEAN UP.
  70. $╞4├8  ╫╥╘07    ╩╙╥ ╥┼┴─╧╬ [$╞┼1┴] TO SET UP FOR DISK ACCESS.
  71. $╞4├┬           ╩╙╥ ├╚╦┬╠╦ [$╞52┴] TO CALCULATE DATA CHECKSUM.
  72. $╞4├┼           SAVE THE CHECKSUM IN ├╚╦╙╒═ [$4┼┴3].
  73. $╞4─1           ╩╙╥ ┬╔╬╟├╥ [$╞┬28] TO CONVERT THE DATA TO ╟├╥.
  74. $╞4─4           ╩╙╥ ╫╥╘┬╒╞ [$╞4─├] TO LOCATE THE BLOCK BY READING THE HEADER.
  75. $╞4─7           ╔F HEADER IS NOT FOUND OR OTHER PROBLEM ENCOUNTERED, BRANCH TO ╫╥╘┼╥╥.
  76. $╞4─9           ╩UMP TO ╓╥╞┘10 TO VERIFY THE DATA WRITTEN.
  77.  
  78.  
  79.  
  80.        ╫╥╘┬╒╞   ╟ET BLOCK TO BE WRITTEN UNDER READ/WRITE HEAD
  81.  
  82. $╞4─├           ╩╙╥ ╙╥├╚ [$╞446] TO LOCATE AND READ BLOCK HEADER.
  83. $╞4─╞           ╔F HEADER READ SUCCESSFULLY, BRANCH TO ╫╥╘12.
  84. $╞4┼1           ╥ETURN.
  85. $╞4┼2  ╫╥╘12    ╙ET .╪ TO $08 WHICH IS USED TO COUNT OFF THE GAP BYTES BETWEEN THE HEADER AND THE DATA.
  86. $╞4┼4  ╫╥╘15    ╫AIT FOR BYTE READY.
  87. $╞4┼7           ╫ASTE SOME TIME WHILE BYTE READY SIGNAL VANISHES.
  88. $╞4┼┬           ─ECREMENT .╪ AND LOOP BACK TO ╫╥╘15 IF NOT ZERO.
  89. $╞4┼┼           ╘URN ╨ORT ┬ LATCH OFF.
  90. $╞4╞0           ╙ET ╨ORT ┬ [$01] TO $╞╞.$╞4╞4           ╙ET CONTROL BITS IN ╨ORT ─ [$03] TO INDICATE WE ARE WRITING.
  91. $╞4╞8           ╫RITE 5 CONSECUTIVE $╞╞ BYTES FOR THE ╙┘╬├ MARK.
  92. $╞508           ╠OAD .┘ WITH $┬┬ (THE INDEX OF THE FIRST PART OF THE BLOCK IN THE OVERFLOW BUFFER).
  93. $╞50┴  ╫╥╘30    ╠OAD .┴ WITH (╧╓╥╨╬╘),┘ [($75),┘].
  94. $╞50├           ╫AIT FOR PREVIOUS BYTE WRITTEN.
  95. $╞50╞           ╧UTPUT BYTE TO ╨ORT ┬ [$01].
  96. $╞511           ╔NCREMENT .┘ AND LOOP BACK TO ╫╥╘30 IF NOT ZERO.
  97. $╞514  ╫╥╘40    ╠OAD .┴ WITH (┬╒╞╨╬╘),┘ [($42),┘].
  98. $╞516           ╫AIT FOR PREVIOUS BYTE WRITTEN.
  99. $╞519           ╧UTPUT BYTE TO ╨ORT ┬ [$01].
  100. $╞51┬           ╔NCREMENT .┘ AND LOOP BACK TO ╫╥╘40 IF NOT ZERO.
  101. $╞51┼           ╫AIT FOR PREVIOUS BYTE WRITTEN.
  102. $╞521           ╙ET ╨ORT ─ [$03] FOR READING ON ╨ORT ┬.
  103. $╞525           ┼NABLE LATCH MODE ON ╨ORT ┬.
  104. $╞527           ╙ET .┴ TO ZERO AND RETURN.
  105.